Information technology infrastructure often plays a vital role in facilitating the efficient operation of modern organizations. For many organizations, such infrastructure extends beyond central servers and onto end-user systems. Administering and supporting IT infrastructure on a large number of end-user systems presents a significant challenge for IT managers. For example, with so many distributed systems, it may be slow and/or difficult to roll out new applications, update existing ones, and/or remove obsolete ones across an entire organization. Furthermore, without the ability to tightly control end-point environments, supporting and troubleshooting end-user systems may become extremely burdensome.
The problems of administering and supporting a large pool of end-user systems are further compounded because different applications installed on a given machine may potentially interfere with one another. For example, each application may rely on various different system files (e.g., dynamic link libraries or DLLs, drivers, configuration files, .sys files, etc.) and/or other settings, such as registry entries. Furthermore, different applications may rely on different versions of the system files and/or settings. In some instances, installing one application on a system may overwrite system files and/or setting relied on by other applications, thereby causing those applications to malfunction.
One approach to address the difficulties of administering a large number of end-user systems is endpoint software virtualization systems, such as Symantec Corporation's Workspace Virtualization Suite. Using such systems, an IT administrator may configure one or more virtual software layers (each containing any number of applications), and deploy those virtual software layers from a server to end-user systems in an automated fashion. In such systems, each virtual software layer may contain its own version of various system files and configuration settings, which may overlap in name and/or purpose with some of those already on the system or in other virtual layers. However, applications encapsulated in a virtual software layer may be configured to use system files and settings stored in the virtual layer rather than those stored on the actual machine (a.k.a., the base environment). For example, a file system filter driver may be configured to intercept system calls from virtualized applications and redirect those system calls to the corresponding system files of the virtual software layer.
By using virtual software layers, various applications can be encapsulated along with their corresponding system files and settings in respective virtual layers. Since system files that support various applications are kept separate from other system files (e.g., those on the base environment or in other virtual layers), application installations may be less likely to interfere with one another. For example, if installing a first application includes installing a new version of a DLL, then by deploying the application in a virtual layer, an administrator may ensure that the installation does not affect other applications that rely on the older version of the DLL.
In some cases, an IT administrator using the virtual software layer scheme described above may wish to move an application deployed in a virtual layer into the system's base environment. However, simply installing the application on the base environment may cause serious damage to the base environment and/or given system. For example, if the virtualization is effectively hiding system file conflicts between the virtualized application and an application in the base environment, then installing the (previously) virtualized application directly onto the base environment may result in over-writing some number of the base environment's system files and/or settings with those of the virtual layer, which may cause applications relying on those system files and/or settings to malfunction.
In view of the above, methods and mechanisms for determining compatibility between a virtualized application and base environment are desired.